const path = require('path')
var md = require('markdown-it')();

module.exports = {
  pages: {
    index: {
      entry: 'example/main.js', // 入口
      // template: 'public/index.html', // 模板
      // filename: 'index.html' // 输出文件
    }
  },
  chainWebpack: config => {
    //一些自定义webpack解析路径
    config.resolve.alias
      .set('@', path.resolve('example')) // @ 默认指向 src 目录，这里要改成 docs
      .set('~', path.resolve('packages')) // ~ 指向 packages

      // 把 packages 和 example 加入编译，因为新增的文件默认是不被 webpack 处理的
      config.module
        .rule('js')
        .include.add(/packages/).end()
        .include.add(/example/).end()
        .use('babel')
        .loader('babel-loader')
        .tap(options => {
          return options
        })

      config.module
        .rule("md")
        .test(/\.md$/)
        .use("vue-loader")
        .loader("vue-loader")
        .end()
        .use("vue-markdown-loader")
        .loader("vue-markdown-loader/lib/markdown-compiler")
        .options({
          raw: true,
          wrapper: "div",
          use: [
            [require('markdown-it-container'), 'code',
              {
                validate: function(params){
                  return params.trim().match(/^code\s+(.*)$/)
                },
                render: function(tokens, idx){
                    var m = tokens[idx].info.trim().match(/^code\s+(.*)$/);
                    var descript = (m && m.length > 1) ? m[1] :''
                    // var components = md.render(tokens[2].children[0].content)
                    var descripHTML = descript ? md.render(descript) : ''
                    if (tokens[idx].nesting === 1) {
                      // opening code
                      return `<code-block>\n<div slot="descript" class="descript_wrap"> ${descripHTML} </div>\n<div slot="mainDemo" class="mainDemo_wrap">`;
                    } else {
                      // closing tag
                      return '</div></code-block>\n';
                    }  
                }
              }
            ],
            [require('markdown-it-container'), 'tip'],
            [require('markdown-it-container'), 'warning'],
          ]
        })
  }
}
